Over the relatively short history of the computer industry dramatic changes have occurred. The most significant of these changes has been the incredible drop in hardware prices along with the equally incredible improvement in performance, reliability, size and ruggedness of computer hardware. The reliability and performance of computers have improved to the point where the military is able to place computers in individual combat vehicles. In this manner a wide area network of computers is formed which may be used to receive orders and other mission critical data, such as the position of enemy and friendly troops, as well as their movements. However, several challenges are encountered that are unique to this type of network and other challenges that are common to all types of networks. One of these unique challenges is that the network must operate in a hostile and mobile battlefield environment which makes the use of cable for high-speed communications out of the question. Only radio or microwave communications methods could be utilized either directly, or via a satellite system. Thus, such a network would have to send messages using a relatively slow low bandwidth communications medium. Of course, a network based on the use of cellular telephones or other radio or microwave frequency technologies would experience the same bandwidth problems regardless of where or how it is used. Another challenge experienced by any type of network is the sheer size such a network may take. Thousands of nodes of various types of computers may have access to a network. However, the use of radio or microwave communications limits the speed at which data may be transmitted over the network. Even when a high-speed cable-based network is utilized, due to the large number of nodes on a network, it is often difficult to broadcast or multicast a message to a large number of users due to the bandwidth consumed. A broadcast message is a message that would be sent from one node to all nodes on the network, while a multicast message would be is a message sent from one node to more than one node but not all nodes on the network.
Presently, TCP/IP (Transmission Control Protocol/Internet Protocol) is utilized for communications over the World Wide Web. Communications using TCP ensures that the total number of packets and the total number of bytes sent in the message are correctly received at the receiving terminal. Simply, this is accomplished through the transmission of acknowledgments by the receiving terminal to the sending terminal. If a packet is not received or there are bytes missing in a packet, the sending terminal receives a retransmission request from the receiving terminal. TCP works well when sending a message to a single or small number of receivers. However, when sending a single message to a large number of receiving terminals is necessary, the volume of traffic on the network becomes burdensome due to the overhead created by TCP. Therefore, TCP is more suitable for a unicast (point-to-point) communications environment.
To solve this overhead problem seen in TCP related to sending multicast messages to a large number of users, UDP (User Datagram Protocol) was developed. UDP is a protocol within TCP/IP and is utilized when reliable message delivery is not required. Lost packets and lost data within packets is simply ignored and no acknowledgments or requests for retransmission are sent back to the sending terminal. UDP is typically used for transmission of audio and video traffic in which a limited amount of data loss may be tolerated. Therefore, UDP is more suitable for a multicast environment in which one source transmits simultaneously to many receivers.
However, neither TCP nor UDP are suitable for environment in which a low bandwidth communications mechanism is used and it is necessary to ensure that at least certain user terminals receive a particular multicast message. This is most evident in the battlefield communications environment previously discussed where radio communications acts as the primary link between nodes in the network and critical messages or orders must be received simultaneously by a relatively large number of terminals.
In order to overcome the limitations of TCP and UDP the United States Naval Research Laboratory developed Multicast Dissemination Protocol (MDP). MDP is a protocol framework designed to reliably transmit multicast messages with low overhead. MDP services sit on top of the generic UDP/IP multicast transport layer found within TCP/IP. Low overhead is achieved through the use of negative acknowledgments as opposed to the acknowledgments typically used by TCP and the complete lack of any acknowledgments in UDP. However, at the same time, MDP will assure that selective recipients will receive a message or at least be aware that a message was only partially received. MDP is described in an Internet-Draft (draft-maker-rmt-mdp-00.txt) written by Brian Adamson and Joe Macker entitled “The Multicast Dissemination Protocol (MDP)”, published on Oct. 22, 1999 and herein incorporated in its entirety by reference. Adamson and Macker have also published a “Multicast Dissemination Protocol (MDP) Developer's Guide” which is also herein incorporated in its entirety by reference. As discussed in the foregoing mentioned Developer's Guide, MDP provides its primary interface through application programming interfaces (API).
However, as with TCP and UDP, MDP is a protocol and does not provide the application layer or other higher level software necessary for a systems administrator to fine tune MDP to achieve the optimum level of performance for a particular network. Fine-tuning would detail setting numerous parameters such as packet size and transmission rate. This fine-tuning of a network can have a significant impact on the performance of the network and on the satisfaction of the users of the network. However, it is not possible to fine tune a network without some mechanism of testing or determining the network's performance and testing or determining how changes to parameters have impacted the performance of the network.
Further, an additional layer of software is required to facilitate the sending and receiving of messages by a user. Also, this additional layer of software should enable the user to select message recipients while keeping overhead to an absolute minimum. This would entail the ability of the user to distinguish among potential recipients and identify those that it is critical for the message to be received by.
Therefore, what is needed is a system and computer program which will initialize an MDP application. This system and computer program should also enable the fine-tuning of the MDP network. Further, this system and computer program should allow users to send and receive messages to others on the network while maintaining minimal overhead for the network. The system and computer program should be able to distinguish between critical recipients of a message and non-critical recipients. This system and computer program should only transmit to identified recipients on the network and not attempt to transmit a message indefinitely to a user or workstation.